package com.luyun.frogpay.view.home;
import com.luyun.frogpay.base.baseclass.BaseContract;
import com.luyun.frogpay.pojo.request.RequestBase;
import com.luyun.frogpay.pojo.response.AuthInfoRsp;

import io.reactivex.Observable;

public interface HomeContract extends BaseContract {
    interface IHomeView extends BaseView {
        /**
         * 是否显示微信加载弹窗
         * @param isShow
         */
        void isSshowWeChatLoadingDialog(boolean isShow);

        /**
         * 人脸支付结果
         */
        void facePayResult(boolean isSuccess);

        /**
         * 获取金额(单位：分)
         */
        String getTotalStr();

        void setCurrentStatus(int status);

    }

    interface IHomePresenter extends BasePresenter<IHomeView> {
        /**
         * 扫脸支付获取数据
         */
        void getWxfacepayRawdata();

        /**
         * 后台获取 AuthInfo
         */
        void getAuthInfo(String rawdata);

        /**
         * 获取 faceCode
         */
        void getWxPayFaceCode(AuthInfoRsp authInfoRsp);

        /**
         * 获取用户信息
         * @param authInfoRsp
         */
        void getWxpayfaceUserInfo(AuthInfoRsp authInfoRsp);

        /**
         * 开始扫码
         */
        void startCodeScanner();

        /**
         * 停止扫码
         */
        void stopCodeScanner();

        /**
         * 条码支付
         * @param payCode
         */
        void codePay(String payCode);

        /**
         * 打开物理键盘
         */
        void openPhysicalKeyboard();

        /**
         * 释放物理键盘
         */
        void realeasePhysicalKeyboard();

        /**
         * 心跳服务开启小键盘
         */
        void initHeart();

        /**
         * 在小键盘上显示
         * @param data
         */
        void displayKeyboard(String data);

        /**
         * 取消
         */
        void cancel();
    }

    interface IHomeModel {
        /**
         * 人脸识别获取 authInfo
         * @param requestBase
         * @return
         */
        Observable getAuthInfo(RequestBase requestBase);

        /**
         * 人脸支付
         * @param requestBase
         * @return
         */
        Observable facePay(RequestBase requestBase);

        /**
         * 条码支付
         * @param requestBase
         * @return
         */
        Observable codePay(RequestBase requestBase);
    }
}
